package com.ruoyi.system.mapper;

import com.ruoyi.system.domain.*;
import org.apache.ibatis.annotations.Param;
import org.springframework.security.core.parameters.P;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public interface ProjectsMapper {
    //查询项目列表
    List<Projects> selectProjectsList(Projects projects);

    //业主单位
    List<Projects> selectProjectsCon(Projects projects);

    //牵头单位
    List<Projects> selectProjectsConName(Long proId);

    //所属层面
    List<String> selectProjectsDesName(Long proId);

    //领域
    List<String> selectDomain();

    Long selectDomById(String domName);

    //层面
    List<Desk> selectDesk();

    Long selectDesById(String desName);

    //区域
    List<String> selectDistrict();

    Long selectDisById(String disName);

    //产业
    List<String> selectIndustry();

    Long selectIndById(String indName);

    //性质
    List<String> selectNature();

    Long selectNatById(String natName);

    //类别
    List<String> selectType();

    Long selectTypById(String typName);

    //指挥部
    List<String> selectCommand();

    Long selectComById(String comName);

    //删除项目
    int remove(Integer proId);

    //删除项目年度信息
    int removeYear(Integer proId);

    //删除项目月度信息
    int removeMouth(Integer proId);

    //删除项目联系信息
    int removeContact(Integer proId);

    //删除项目层面信息
    int removeDesk(Integer proId);

    //删除项目文件
    int removeFile(Integer proId);

    //删除项目存在问题
    int removeIssue(Integer proId);

    //删除项目相关监控
    int removeMonitoring(Integer proId);

    //删除项目图片
    int removePicture(Integer proId);

    //修改回显
    Projects getPro(Long proId);

    //项目联系信息回显
    List<Contact> getProInf(Long proId);

    //年度信息
    List<ProYear> getProYear(Long proId);

    //根据userid 查user姓名
    String selectUserNameById(Long createUserId);

    //新增项目
    int insertProjects(Projects projects);

    //添加中间表
    int insertDesk(@Param("proId") Long proId, @Param("desId") Long desId);

    //修改项目
    int updateProjects(Projects projects);

    //删除中间表
    int updateDesk(@Param("proId") Long proId);


    //项目联系信息删除
    int removeConById(Long conId);

    //项目联系信息修改
    int updateContact(Contact contact);


    Long selectContIdByName(String contName);

    //项目联系信息新增
    int addContact(Contact contact);

    //返回所有业主单位
    List<ContactType> getAllCon();

    //大屏标点内容ProjectContent
    ProjectContent selectDomesticContent(@Param("proLongitude") String proLongitude, @Param("proDimensionality") String proDimensionality);

    //项目编号项目名称共同唯一
    Integer queryByname(@Param("proNum") String proNum, @Param("proName") String proName);

    //项目编号项目名称共同唯一
    Integer queryBynum(@Param("proNum") String proNum);

    //查询项目内监控
    List<ProjectMonitoring> queryMonitoring(ProjectMonitoring monitoring);

    //分级各项目数 百万以下
    Integer UnderMillion();

    //百万级别
    Integer Million();

    //千万级别
    Integer TenMillion();

    //亿（及以上）
    Integer Billion();

    //添加项目监控
    int addMonitoring(ProjectMonitoring projectMonitoring);

    //删除项目内监控
    int delMonitoring(Long mId);

    //根据性质查年度总投资
    Double queryInvestBynatName(@Param("natName") String natName,@Param("deptId") int deptId);

    //根据性质查年度计划投资
    Double queryInvestGoalBynatName(@Param("natName") String natName,@Param("deptId") int deptId);

    //根据性质查项目数量
    int querycountBynatName(@Param("natName") String natName,@Param("deptId") int deptId);

    //查询完成度数量
    int selectProNum(HashMap map);

    //查询所有性质
    List<Nature> queryNature();

    //    完成度
    int selectplan(@Param("i") int i,@Param("deptId") int deptId);

    //所有项目数
    int sum(@Param("deptId") int deptId);
    //监控校验
    int queryByKey(Map map);

    //根据userid查询部门
    int selectDept(String userId);

    //查询是否为政府
    int selectDeptId(Integer deptId);
    //萤石云
    List<ProjectMonitoring> selectYsyCamerasselfList(YsyCamerasself ysyCamerasself);
    //萤石云绑定项目
    int addMonitoring2(Map map);
    //萤石云删除
    int delMonitoring2(Map map);
    //萤石云校验
    int sumMonitoring2(Map map);
    List<YsyCamerasself> querycamerabyareaid(YsyCamerasself ysyCamerasself);
    //萤石云项目监控
    List<YsyCamerasself> querycamerabyproId(Long proId);
}
